草庐IT

C++ 对和指针

全部标签

c++ - 替换共享指针的内容?

我有一个在系统中共享的共享指针。后来,我想替换这些共享指针指向的实际内容,但仍然保持所有共享指针有效,所以它们在内部指向这个新对象。有没有一种简单的方法可以使用共享指针来做到这一点?有点像我正在寻找的-伪代码typedefboost::shared_ptrModelPtrModelPtrmodel1=ModelPtr(newModel);ModelPtrmodel2=model1;//makesomethinglike'model1.get()=newModel'somodel1,model2bothpointstoanewmodel编辑:我想要这个效果,但不那么花哨ModelPtrm

c++ - 为什么迭代对象列表比迭代对象指针列表慢?

在阅读这篇关于列表缓存有多不友好的博文后:http://www.baptiste-wicht.com/2012/11/cpp-benchmark-vector-vs-list/...我试图通过将实际对象放入每个节点(从而删除一个间接操作)来使指向对象的指针的std::list更加缓存友好,希望在缓存当前节点时,对象也会。但是,性能实际上下降了。这是我使用的代码:源代码和二进制文件:http://wilcobrouwer.nl/bestanden/ListTest%202013-8-15%20%233.7z#includeusingstd::list;listcase1;listcase

C++理解cocos2d-x函数指针的使用

我正在尝试扩展cocos2d-xCCMenuItem组件,并遇到了一些我以前在C++中从未见过的东西。如果有人能详细说明他们的函数指针声明发生了什么,那将会很有帮助大多数cocos2d-x对象的基类是CCObject,其定义如下classCC_DLLCCObject:publicCCCopying{public://Codeomitted};//ThepartinwhichIhaveaquestionabouttypedefvoid(CCObject::*SEL_SCHEDULE)(float);typedefvoid(CCObject::*SEL_CallFunc)();typede

c++ - 如何实例化一个全局智能指针变量?

如何实例化unique_ptrsums;在intmain(intargc,char**argv){intn=//getfromargssums(newint[n]);}?它给了我以下编译时错误errorC2247:'std::default_delete::operator()'notaccessiblebecause'std::unique_ptr>'uses'private'toinheritfrom'std::_Unique_ptr_base' 最佳答案 看起来您可能对C++的构造函数调用语法感到困惑。如果你说unique_p

c++ - 返回指向类中类的指针

这是我第一次做这样的事情,所以我有点不确定我需要怎么做。我有一个非常简单的类,其中包含一些简单的值和一些getter:classNucleotide{private:charBase;intPosition;intPolymorphic;public:Nucleotide(charch,intpos);intgetPos();chargetBase();intgetPoly();};这个类存在于另一个包含它们的vector的类中:classNucleotideSequence{private:std::stringName;std::vectorSequence;public:Nucl

C++:用于取消引用的 [x] 语义:C 风格与指针数组

我知道c风格的数组存储为连续的内存块。这就是以下代码的原因:intmain(intargc,char*argv[]){intarr[3][3];*(*arr+5)=5;std::cout打印5。我假设对于c样式数组*(*arr+5)=5;大致等于编译器为arr[1][2生成的代码]=5;不是吗?(Q1)如果是这样,那么arr[1][2]的语义(即在一个内存块上移动)与在多维指针数组上执行相同操作完全不同,后者的每一层嵌套都会导致指针被解除引用。那正确吗?(Q2)我自己有什么需要注意的地方吗?IE。编译器不知道自己在处理什么样的数组?(Q3)(Qx标记我的问题)在此先感谢您和问候

c++ - 如何跨指针保持 const 正确性?

我正在尝试对真正为const的类进行const操作-它不会更改该类指向的数据。例如:classNode{public:intval;};classV{public:Node*node;//whatisthechangethatisneededhere?voidconst_action()const{node->val=5;//errorwantedhere}voidaction(){node->val=5;//errorisnotwantedhere}}; 最佳答案 您可以使用模板在指针上强制执行const正确性,而无需更改类的含义

c++ - std::map 对象或对象指针?

我有两个选项来创建标准map。我可以使用这两种类型的map。1.std::map2.std::map其中A是一个类对象稍后在代码中我将不得不执行查找操作。1.std::mapmyMap1;if(myMap1.find(A_obj)!=myMap1.end()){}2.std::mapmyMap2;if(myMap2.find(A_obj_ptr)!=myMap2.end()){}我想知道推荐创建哪一个。在这两个中的哪一个中,我不需要必须重载A类中的任何运算符才能使查找操作正常工作。当任何运算符未重载时,其中哪些会在插入操作时出现问题。如果有帮助,这是A类classA{private:s

c++ - 将模板化 T 定义为指针

我想使用这段代码定义一些通用指针(?但不是空指针):classA{templateusingptr=T*;usingubyte=uint8_t;public:constptrgetColor1()const{return&colors[0];}constubyte*getColor2()const{return&colors[0];}private:ubytecolors[4];};但是,getColor1()不会编译。这两个函数有什么区别?海湾合作委员会说:error:invalidconversionfrom'constubyte*{akaconstunsignedchar*}'t

c++ - 在智能指针的双图中查找原始指针

我需要能够搜索原始指针Thing*在boost::bimap,int>.但是,我无法调用带有签名的函数bm.left.find(thingRawPtr)因为不能从原始指针隐式构造智能指针:bimap,int>bm;voidf(Thing*thing){bm.left.find(thing);//(Nasty)compileerror}规避这种情况的最佳方法是什么? 最佳答案 你必须创建一个智能指针,但你不能以常规方式进行,因为那样你将有两个单独创建的智能指针管理一个对象,当一个指针决定删除Thing,other指针留悬空指针。要解决